1. Field of the Invention
This invention relates to multicast routing.
2. Related Art
Communication on a computer network is accomplished by sending messages. Messages can include one or more data packets. Packets can be of fixed or variable lengths. Cells are packets having a fixed length.
Messages have a source and at least one destination address. A computer network includes devices that direct traffic towards the destination address. A switch is one such device.
Switches have multiple input interfaces and multiple output interfaces, which may be connected in a variety of ways. A cross bar switch is designed so that every input interface can be connected to every output interface.
There are two types of network traffic. In the first type a message has only one final destination address. This is known as unicast traffic. One use of unicast traffic is point to point communication between two computers. In the second type of traffic, called multicast, a message is sent to multiple destinations. One use of multicast transmissions is when a computer user wishes to send a message over the Internet to many individuals wishing to receive the message. A switch can have both unicast input interfaces as well as multicast input interfaces; often an interface handles both unicast as well as multicast traffic.
There are two main types of schemes for storing messages in the known art, which are input queuing and output queuing. (Combinations are also possible). In input queuing, a packet is queued before it enters the crossbar switch, and waits in line to arrive at the head of the input queue and be sent onward to its destination across the crossbar fabric. In output queuing, packets are forwarded onto the crossbar fabric from the input interface immediately, and queued up as they arrive at their destination output.
Output queuing hits limitations in memory speed faster than does input queuing because output queuing requires a memory at the output which is capable of momentarily receiving traffic from multiple inputs (in the worst case, all inputs), and sending out traffic at the output line rate. This means the memory in an output queued scheme must be faster than the memory in an input queued scheme by a factor equal to the number of interfaces.
In order to improve efficiency and thus the general performance in the case of high performance systems, it is preferable to use input queuing to accomodate the limited memory speeds available. The following description of the Head of Line Blocking problem assumes an input queued system.
A unicast message, having only one destination, only needs to be routed to one output interface of a switch. Messages may be simply queued in the order received until they can be transmitted through the selected output interface. A problem in the known art occurs when the message at the head of a first queue is to be sent to an output interface that is not available due to a message from another queue using the output interface. The first queue is blocked until the particular output interface is available; no messages from this queue can be sent until the first element in the queue, or xe2x80x9chead elementxe2x80x9d, is cleared by being sent across the switch to the output interface. (The queue may be implemented with each element being a single packet or cell, or may be implemented with each element including all the packets or cells that make up a single message). If the output interface is busy for an extended period, several queues may become blocked. This is known as the Head-of-Line blocking (xe2x80x9cHOL blockingxe2x80x9d) problem.
A known technique for approaching the HOL blocking problem for unicast traffic is the use of virtual output queues (xe2x80x9cVOQsxe2x80x9d). VOQs are virtual (logical) queues maintained in software or hardware; each VOQ is associated with a physical interface. There is a one-to-one correspondence between the VOQs and possible input/output combinations. The number of VOQs needed scales arithmetically as Mxc3x97N, where M and N are the number of output interfaces and input interfaces, respectively. For a crossbar switch with 16 unicast input interfaces and 16 output interfaces, commonly called a xe2x80x9c16xc3x9716xe2x80x9d switch, 256 VOQs are need. If a particular output interface is tied up, a virtual queue associated with some other output interface can still send messages to that other output interface.
It should be noted that although the term used is xe2x80x9cvirtual output queuexe2x80x9d, the method is actually an input queued method, as the queues are maintained for each input interface.
The VOQ method has the drawback that it only applies to unicast routing. VOQs cannot be applied to multicast routing because for multicast the number of VOQs needed to accommodate all possible input/output combinations is prohibitively large, growing exponentially as 2Mxc3x97N, where M is the number of output interfaces and N is the number of multicast input interfaces. For a switch with 2 input interfaces and 16 output interfaces, a total of 2xc3x97216 (approximately 130,000) virtual queues would be required to implement VOQs. Very large numbers of VOQs use valuable resources such as memory and chip real estate, and likely cannot fit on a single chip using current technology.
Multicast transmissions are increasingly common and HOL blocking is an ongoing and unaddressed problem for multicast routing. Accordingly, it would be advantageous to be able to route multicast messages with reduced HOL blocking, in a manner such that there is overall improved performance of the network.
This advantage is achieved in an embodiment of the invention in which multiple virtual output queues, for convenience in this application called xe2x80x9cmulticast virtual output queuesxe2x80x9d (xe2x80x9cMVOQsxe2x80x9d), are maintained for a multicast interface, the number of queues being an intermediate number between 1 and 2M, such as 8 for a switch having 16 output interfaces (M=16). These MVOQs are an input queued system. Implementation of an allocation policy in conjunction with queues can also increase performance.
The invention includes a method and apparatus for routing multicast traffic with better performance and reduced Head of Line blocking. This is achieved by means of the use of multiple virtual output queues for each input interface that handles multicast traffic, called xe2x80x9cmulticast virtual output queuesxe2x80x9d (MVOQs). Schemes for allocation of queues including random allocation, round robin, and Shortest Queue First (SQF) allocation can further improve performance. In an alternative embodiment, global MVOQs that can be used as queues by multiple input interfaces, can be used instead of MVOQs associated with a specific input interface.